"""系统环境变量 PATH 设置工具

将当前目录永久添加到系统级 PATH 环境变量中。

用法:
    python makepath.py

功能:
    - 获取当前工作目录
    - 检查目录是否已在 PATH 中
    - 将目录添加到系统级 PATH 环境变量
    - 自动处理路径分隔符

示例:
    > cd D:\your\tools
    > python makepath.py
    已将 D:\your\tools 永久添加到系统 PATH 环境变量中。

注意:
    - 需要管理员权限运行
    - 修改的是系统级环境变量
    - 修改后可能需要重启命令行或系统
    - 请谨慎使用，避免添加不安全的目录
"""

import os
import winreg

def add_to_path_permanently():
    # 获取当前目录
    current_dir = os.getcwd()
    # 打开系统环境变量的注册表项（系统级别）
    key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE,
                         r"SYSTEM\CurrentControlSet\Control\Session Manager\Environment",
                         0, winreg.KEY_ALL_ACCESS)
    try:
        # 获取当前的 PATH 环境变量值
        path_value, _ = winreg.QueryValueEx(key, "Path")
        # 检查当前目录是否已经在 PATH 中
        if current_dir not in path_value.split(os.pathsep):
            # 如果不在，将当前目录添加到 PATH 中
            new_path = f"{current_dir}{os.pathsep}{path_value}"
            # 更新注册表中的 PATH 环境变量值
            winreg.SetValueEx(key, "Path", 0, winreg.REG_EXPAND_SZ, new_path)
            print(f"已将 {current_dir} 永久添加到系统 PATH 环境变量中。")
        else:
            print(f"{current_dir} 已经在系统 PATH 环境变量中。")
    except FileNotFoundError:
        # 如果 PATH 环境变量不存在，直接设置为当前目录
        winreg.SetValueEx(key, "Path", 0, winreg.REG_EXPAND_SZ, current_dir)
        print(f"已将 {current_dir} 永久添加到系统 PATH 环境变量中。")
    finally:
        # 关闭注册表项
        winreg.CloseKey(key)

if __name__ == "__main__":
    add_to_path_permanently()